/**
 * 
 */
package de.jare.photoswapper;

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.util.Log;

/**
 * @author jan
 * 
 */

public class HttpHelper {

	public void FileUpload() {

		String exsistingFileName = "/sdcard/t1.mp3";

		String lineEnd = "\r\n";
		String twoHyphens = "--";
		String boundary = "*****";
		String urlString = "swap.ganzbunt.de/get.php";
		HttpURLConnection conn;
		
		try {
			// ------------------ CLIENT REQUEST

			Log.e("ps", "Inside second Method");

			FileInputStream fileInputStream = new FileInputStream(new File(exsistingFileName));

			// open a URL connection to the Servlet

			URL url = new URL(urlString);

			// Open a HTTP connection to the URL

			conn = (HttpURLConnection)url.openConnection();

			// Allow Inputs
			conn.setDoInput(true);

			// Allow Outputs
			conn.setDoOutput(true);

			// Don't use a cached copy.
			conn.setUseCaches(false);

			// Use a post method.
			conn.setRequestMethod("POST");

			conn.setRequestProperty("Connection", "Keep-Alive");

			conn.setRequestProperty("Content-Type",
					"multipart/form-data;boundary=" + boundary);

			DataOutputStream dos = new DataOutputStream(conn.getOutputStream());

			dos.writeBytes(twoHyphens + boundary + lineEnd);
			dos.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\""
							+ exsistingFileName + "\"" + lineEnd);
			dos.writeBytes(lineEnd);

			Log.e("ps", "Headers are written");

			// create a buffer of maximum size

			int bytesAvailable = fileInputStream.available();
			int bufferSize = Math.min(bytesAvailable, 1024);
			byte[] buffer = new byte[bufferSize];

			// read file and write it into form...

			int bytesRead = fileInputStream.read(buffer, 0, bufferSize);

			while (bytesRead > 0) {
				dos.write(buffer, 0, bufferSize);
				bytesAvailable = fileInputStream.available();
				bufferSize = Math.min(bytesAvailable, 1024);
				bytesRead = fileInputStream.read(buffer, 0, bufferSize);
			}

			// send multipart form data necesssary after file data...

			dos.writeBytes(lineEnd);
			dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

			// close streams
			Log.e("ps", "File is written");
			fileInputStream.close();
			dos.flush();
			dos.close();

		} catch (MalformedURLException ex) {
			Log.e("ps", "error: " + ex.getMessage(), ex);
		}

		catch (IOException ioe) {
			Log.e("ps", "error: " + ioe.getMessage(), ioe);
		}
	}

}
